# 列表: Python 的主力

# 函数 list 可将任意序列(不仅仅是字符串)作为list的参数
print(list('hello'))
print(''.join(['h', 'e', 'l', 'l', 'o']))

"""
基本的列表操作
"""

# 1. 修改列表: 给元素赋值
x = [1, 1, 1]
x[1] = 2
print(x)
# 2. 删除元素
del x[0]
print(x)
# 3. 给切片赋值
name = list('哈喽我的')
name[1:] = list('里路亚')
print(name)
arr = [1, 2, 3, 4, 5]
arr[1:-1] = list('三天之类')
print(arr)

"""
列表方法
"""

list = [1, 2, 3, 4, 5]
# 1. append
# 就地将一个对象附加在列表尾
list.append(6)
print(list)

# 2. clear
# 就地清空列表
list.clear()
print(list)

# 3. copy
# 复制列表
a = [1, 2, 3]
b = a
b[0] = 4
print(a, b)
a = [1, 2, 3]
b = a.copy()
b[0] = 4
print(a, b)

# 4. count
# 计算指定元素在列表中出现的次数
lis = ['a', 'a', 'a', 'b', 'b', 'c']
print(lis.count('a'))

# 5. extend
# 将多个值就地附加在列表末尾
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)

# 6. index
# 在列表中查找指定值第一次出现的索引
print(a.index(3))
# print(a.index(7)) # 没有这个值得时候会直接报错

# 7. insert
# 将一个对象插入列表
a.insert(0, '123')
print(a)

# 8. pop
# 就地从列表删除最后一个元素 并返回
# pop 方式是唯一一个修改原列表同时返回值不为 None
print(a)
print(a.pop())
print(a)

# 9. remove
# 用于就地删除第一个为指定值的元素
a.remove(1)
print(a)

# 10. reverse
# 就地反转数组
a.reverse()
print(a)

# 11. sort
# 就地对列表进行排序
b = [2, 1, 3]
b.sort()
print(b)

# 12. 高级排序
# 方法sort接受两个可选参数：key和reverse。这两个参数通常是按名称指定的，称为关键字参数
# 数key类似于参数cmp：你将其设置为一个用于排序的函数。然而，不会直接使用这个函数来判断一个元素是否比另一个元素小，而是使用它来为每个元素创建一个键，再根据这些键对元素进行排序。
x = ['aardvark', 'abalone', 'acme', 'add', 'aerate']
x.sort(key=len)
print(x)
# 对于另一个关键字参数reverse，只需将其指定为一个真值
x.sort(reverse=True)
print(x)






